package com.ass.database.entity;

import com.common.core.utils.StringUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * 数据源管理/数据库信息 实体类
 *
 * @author lqy
 * @time 2024-02-18 16:25
 */
@Getter
@Setter
@Accessors(chain = true)
public class DbDatabase {

    private static final long serialVersionUID = 1L;

    /** 数据库编码格式 */
    private String charset;
    /** 数据库名称 */
    private String name;
    /** 数据源主键 */
    private Long sourceId;
    /** 来源名称 */
    private String sourceRemark;
    /** 唯一编码 */
    private String code;

    /** 当前数据库所对应的数据源信息 */
    private DbSource dbSource;

    public DbDatabase() {}


    public static DbDatabase getApplicationParam(String dataBaseName, String ip,
                                                 String port, String username,
                                                 String password, String schema,
                                                 String catalog,String dataBaseType){
        DbDatabase dbDatabase =  new DbDatabase();
        dbDatabase.setName(dataBaseName);

        DbSource dbSource = new DbSource();
        dbSource.setSourceIp(ip);
        dbSource.setSourcePort(port);
        dbSource.setUserName(username);
        dbSource.setPassword(password);
        //模式名称 只有PGSQL有
        if(StringUtils.isNotEmpty(schema)){
            dbSource.setSchema(schema);
        }
        //catlog名称 只有Paimon有
        if(StringUtils.isNotEmpty(catalog)){
            dbSource.setCatalog(catalog);
        }
        dbSource.setType(dataBaseType);
        dbDatabase.setDbSource(dbSource);
        return dbDatabase;
    }
}
